When a media file is published, it is typically encoded at different bitrates to accommodate varying bandwidth conditions. Every bitrate version may be sliced into segments. For every bitrate, a server may publish a master playlist (e.g., a list of available bitrate playlists) and a set of bitrate playlists (e.g., a consecutive list of segments for a given bitrate).
During playback, a client may select each consecutive segment based on available bandwidth. This may be done with the goal of maximizing visual quality (i.e., picking the segment with the highest bitrate), while providing an interruption-free experience (i.e., not picking segments that would take too long to download). The client may select segments from multiple bitrates while playing one media program. This process may be referred to as multiple bitrate streaming, which involves adaptively sending media program segments encoded at multiple bitrates to clients. For example, when the client determines that the available bandwidth or download speed is greater than the bitrate of the media program being downloaded, the client can request a higher bitrate version of the media program. In contrast, when the client determines that the available bandwidth or download speed is lower than the current bitrate of the media program being downloaded, the client can request a lower bitrate version of the media program.